import sdk from '../core/index';
import { MailItem } from "../shared/face";
import { MailService } from "../service/MailService";

/**
 * 邮件组件 - 主要负责邮件数据管理
 * 职责：
 * 1. 管理邮件列表状态
 * 2. 处理邮件添加和删除
 * 3. 拉取新邮件
 */
import component, { ComType } from "../core/tool/component";
export default class mail_component extends component {
    list: MailItem[] = [];
    
    constructor() {
        super();
    }
    
    init() {
        // 初始化邮件组件
    }
    
    /**
     * 添加邮件
     * @param mail 邮件项
     */
    add(mail: MailItem) {
        this.list.push(mail);
        this.client_text(`你有一封新邮件,请回到主城查看`);
    }
    
    /**
     * 删除邮件
     * @param id 邮件ID
     */
    del(id: string) {
        this.list = this.list.filter(v => v._id != id);
    }
    
    /**
     * 拉取新邮件
     * @returns 新邮件数量
     */
    async pull(): Promise<number> {
        const result = await MailService.pullNewMails(this.id);
        
        // 避免重复添加邮件
        const existingMailIds = new Set(this.list.map(mail => mail._id));
        const newMails = result.newMails.filter(mail => !existingMailIds.has(mail._id));
        
        this.list.push(...newMails);
        
        if (newMails.length) {
            this.client_text(`你有${newMails.length}封新邮件请注意查收`);
        }
        
        return newMails.length;
    }
}

